Оператор withLatestFrom

Оператор withLatestFrom в RxJS используется для комбинирования значений из основного Observable и других Observable в сочетании с последним значением каждого из них. Этот оператор полезен, когда вам нужно получить доступ к последнему значению одного или нескольких Observable и объединить его с основным Observable для создания нового значения.

Давайте рассмотрим шаги и примеры кода для лучшего понимания оператора withLatestFrom:

Шаг 1: Импорт оператора withLatestFrom и необходимых функций из библиотеки RxJS:

import { withLatestFrom } from 'rxjs/operators';
import { of } from 'rxjs';

Шаг 2: Создание основного Observable и другого Observable, с которыми мы хотим объединить значения:

const source$ = of(1, 2, 3, 4, 5);
const second$ = of('A', 'B', 'C', 'D', 'E');

Шаг 3: Использование оператора withLatestFrom для комбинирования значений:

const result$ = source$.pipe(
  withLatestFrom(second$)
);

Шаг 4: Подписка на результирующий Observable и обработка его значений:

result$.subscribe(([sourceValue, secondValue]) => console.log(sourceValue, secondValue));

В результате выполнения этого кода мы получим следующий вывод:

1 A
2 B
3 C
4 D
5 E

Объяснение: Оператор withLatestFrom объединяет значения из основного Observable source$ и другого Observable second$. Когда мы подписываемся на результирующий Observable, для каждого значения из основного Observable source$, мы получаем последнее значение из другого Observable second$ в сочетании с ним.

В приведенном примере, для каждого значения из source$ (1, 2, 3, 4, 5), мы получаем последнее значение из second$ (A, B, C, D, E) и выводим их вместе.

Оператор withLatestFrom также может принимать несколько Observable в качестве аргументов. Например:

const third$ = of(true, false, true, false, true);

const result$ = source$.pipe(
  withLatestFrom(second$, third$)
);

result$.subscribe(([sourceValue, secondValue, thirdValue]) => console.log(sourceValue, secondValue, thirdValue));

В этом случае мы объединяем значения из трех Observable. Вывод будет следующим:

1 A true
2 B false
3 C true
4 D false
5 E true

Таким образом, оператор withLatestFrom позволяет комбинировать значения из основного Observable и других Observable, используя последнее значение каждого из них для создания нового значения. Это полезный оператор для синхронизации и комбинирования данных из разных источников.